﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SIMCObjetoNegocio
{
    public class IRR
    {
        public double[] _Flujo;
        public double TasaPromedio { get; private set; }
        public double TasaTotal { get; private set; }
        public double TasaAnualizada { get; private set; }

        public IRR(List<double> flujo)
        {
            _Flujo = flujo.ToArray();
            TasaAnualizada = 0;
            TasaPromedio = 0;
            TasaTotal = 0;
            Calcular();
        }

        private void Calcular()
        {
            try
            {
                double x = Microsoft.VisualBasic.Financial.IRR(ref _Flujo,0);

                TasaPromedio = (x * 100);

                TasaTotal = (Math.Pow((1 + x), _Flujo.Length - 1) - 1) * 100;

                if (_Flujo.Length > 14)
                {
                    TasaAnualizada = (Math.Pow((1 + x), 12) - 1) * 100;
                }
            }
            catch (ArgumentException ex)
            {
                throw new ArgumentException("Los valores de entrada impiden el calculo de la TIR");
            }
        }
    }
}
